<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script type="text/javascript" src="../js/react.development.js" ></script>
    <script type="text/javascript" src="../js/react-dom.development.js" ></script>
    <script type="text/javascript" src="../js/babel.min.js" ></script>
    <style>
        .title{
            background-color: orange;
            width:500px;
        }
    </style>
</head>
<body>
    <div id="test"></div>
    <script type="text/javascript">
        // 创建Person类
        class Person {
            // 构造器方法
            // 不是必须写的。
            constructer(name,age){
                // 这里的this是类的实例对象
                this.name=name
                this.age=age
            }
            // 一般方法
            speak(){
                // 通过实例调用speak时，this是实例对象
                // 如p1.speak.call({a:1,b:2})方式调用时this就不是实例对象了。
                // 用es6的模板字符串，嵌套表达式
                console.log(`name is ${this.name}, age is ${this.age}`)
            }
        }
        // 创建实例对象
        const p1 = new Person('t',19)
        const p2 = new Person('z',18)
        p1.speak()
        p2.speak()
        // 创建继承类
        class Student extends Person{
            constructer(name,age,grade){
                // 必须用super调用父类的构造器，且必须要调用一次，而且必须在其他的this调用的前面。
                super(name,age)
                this.grade = grade
            }
            // 重写了方法
            speak(){
                console.log(`name is ${this.name}, age is ${this.age},grade is ${this.grade}`)
            }
            // 类里面可以直接写赋值语句，作为属性
            wheel = 6
        }
        // 调用父类的构造器来创建实例对象
        const s1 = new Student('s',15,'高一')
        console.log(s1)
    </script>
</body>
</html>